From 8e5a6833ffa2a6b1dbbdcc6957ed1df6adb8543f Mon Sep 17 00:00:00 2001 From: "iap10@freefall.cl.cam.ac.uk" Date: Wed, 9 Feb 2005 23:23:30 +0000 Subject: [PATCH] bitkeeper revision 1.1159.223.85 (420a9b72OGag4m4sDtlxM-918tbudQ) Subject: [Xen-devel] VNET - full update Allows vnets to compile and run under 2.6.10/xen-testing. PATCH: vnet-cleanup.patch Signed off by: bgb@nt-nv.com Signed-off-by: ian@xensource.com --- .rootkeys | 1 + tools/vnet/INSTALL | 31 +++++++++++++++++++++++++++++ tools/vnet/Makefile | 10 +++++----- tools/vnet/vnet-module/Makefile-2.6 | 4 ++-- tools/vnet/vnet-module/if_varp.h | 4 ++-- tools/vnet/vnet-module/varp.c | 14 ++++++------- tools/vnet/vnetd/vcache.c | 14 ++++++------- 7 files changed, 55 insertions(+), 23 deletions(-) create mode 100644 tools/vnet/INSTALL diff --git a/.rootkeys b/.rootkeys index a6f49dc24c..fd74dc7d31 100644 --- a/.rootkeys +++ b/.rootkeys @@ -556,6 +556,7 @@ 41013a83z27rKvWIxAfUBMVZ1eDCDg tools/sv/inc/script.js 40fcefb3zGC9XNBkSwTEobCoq8YClA tools/sv/inc/style.css 41a21888_WlknVWjSxb32Fo13_ujsw tools/vnet/00README +420a9b706I-bN_uPdiy0m3rmDifNNg tools/vnet/INSTALL 41a21888bOiOJc7blzRbe4MNJoaYTw tools/vnet/Makefile 41a21888mg2k5HeiVjlQYEtJBZT4Qg tools/vnet/doc/vnet-module.txt 41a21888cuxfT8wjCdRR6V1lqf5NtA tools/vnet/doc/vnet-xend.txt diff --git a/tools/vnet/INSTALL b/tools/vnet/INSTALL new file mode 100644 index 0000000000..8ece553116 --- /dev/null +++ b/tools/vnet/INSTALL @@ -0,0 +1,31 @@ +To compile and install run "make install"; if it fails or you need to reinstall +run "make clean" first or the build will fail, at least that is what I have +found under 2.6.10. + +Other important items: +1) You will need to have your xen0 kernel compiled with HMAC_SUPPORT + 2.6.x = (MAIN MENU: Cryptographic Options -> HMAC Support) + BEFORE running "make install". + +2) You will want at least some of the other alogorithms listed under + "Cryptographic Options" for the kernel compiled as modules. + +3) You will want the networking IPsec/VLAN options compiled in as modules + 2.6.x = (MAIN MENU: Device Drivers -> Networking Support -> + Networking Options -> + IP: AH transformation + IP: ESP transformation + IP: IPComp transformation + IP: tunnel transformation + + IPsec user configuration interface + + 802.1Q VLAN Support + +4) The module (vnet_module) will not properly load from the command line + with a "modprobe vnet_module". Use network-vnet to properly configure + your system and load the module for you. + +Please refer to the additional documentation found in tools/vnet/doc for +proper syntax and config file parameters. + diff --git a/tools/vnet/Makefile b/tools/vnet/Makefile index 63939dff9d..d4d8183130 100644 --- a/tools/vnet/Makefile +++ b/tools/vnet/Makefile @@ -12,6 +12,7 @@ export prefix?=$(shell cd ../../dist/install && pwd) all: compile compile: vnetd vnet-module +#compile: vnet-module gc.tar.gz: wget http://www.hpl.hp.com/personal/Hans_Boehm/gc/gc_source/$@ @@ -20,10 +21,8 @@ gc: gc.tar.gz tar xfz gc.tar.gz ln -sf gc?.? gc -gc/Makefile: - (cd gc && ./configure --prefix=`pwd`/install) - -gc-install: gc gc/Makefile +gc-install: gc + (cd gc && make test && ./configure --prefix=`pwd`/install) make -C gc make -C gc install @@ -47,5 +46,6 @@ install: compile clean: -$(MAKE) -C vnetd clean -$(MAKE) -C vnet-module clean - + -rm -rf gc?.? gc + pristine: clean gc-pristine diff --git a/tools/vnet/vnet-module/Makefile-2.6 b/tools/vnet/vnet-module/Makefile-2.6 index 64e57ea5ff..053391e572 100644 --- a/tools/vnet/vnet-module/Makefile-2.6 +++ b/tools/vnet/vnet-module/Makefile-2.6 @@ -38,8 +38,8 @@ module modules: .PHONY: install install-module modules_install install install-module modules_install: module - install -m 0755 -d $(DESTDIR)$(KERNEL_MODULE_DIR) - install -m 0554 $(KERNEL_MODULE) $(DESTDIR)$(KERNEL_MODULE_DIR) + install -m 0755 -d $(DESTDIR)$(KERNEL_MODULE_DIR)/xen + install -m 0554 $(KERNEL_MODULE) $(DESTDIR)$(KERNEL_MODULE_DIR)/xen .PHONY: clean clean: diff --git a/tools/vnet/vnet-module/if_varp.h b/tools/vnet/vnet-module/if_varp.h index 49058471db..c4b752ac49 100644 --- a/tools/vnet/vnet-module/if_varp.h +++ b/tools/vnet/vnet-module/if_varp.h @@ -36,7 +36,7 @@ typedef struct VnetMsgHdr { } __attribute__((packed)) VnetMsgHdr; typedef struct VarpHdr { - VnetMsgHdr; + VnetMsgHdr vnetmsghdr; uint32_t vnet; Vmac vmac; uint32_t addr; @@ -50,4 +50,4 @@ typedef struct VarpHdr { -#endif /* ! _VNET_IF_VARP_H */ +#endif /* ! _VNET_IF_VARP_H */ diff --git a/tools/vnet/vnet-module/varp.c b/tools/vnet/vnet-module/varp.c index 3b1507e045..f7bdf81d97 100644 --- a/tools/vnet/vnet-module/varp.c +++ b/tools/vnet/vnet-module/varp.c @@ -368,8 +368,8 @@ int varp_send(u16 opcode, struct net_device *dev, struct sk_buff *skbin, // Varp header. varph = (void*)skb_put(skbout, varp_n); *varph = (VarpHdr){}; - varph->id = htons(VARP_ID); - varph->opcode = htons(opcode); + varph->vnetmsghdr.id = htons(VARP_ID); + varph->vnetmsghdr.opcode = htons(opcode); varph->vnet = htonl(vnet); varph->vmac = *vmac; varph->addr = saddr; @@ -1076,9 +1076,9 @@ int varp_handle_message(struct sk_buff *skb){ goto exit; } mine = 1; - if(varph->id != htons(VARP_ID)){ + if(varph->vnetmsghdr.id != htons(VARP_ID)){ // It's not varp at all - ignore it. - wprintf("> Unknown id: %d \n", ntohs(varph->id)); + wprintf("> Unknown id: %d \n", ntohs(varph->vnetmsghdr.id)); goto exit; } if(1){ @@ -1086,13 +1086,13 @@ int varp_handle_message(struct sk_buff *skb){ NIPQUAD(skb->nh.iph->saddr), NIPQUAD(skb->nh.iph->daddr)); dprintf("> sport=%u dport=%u\n", ntohs(skb->h.uh->source), ntohs(skb->h.uh->dest)); dprintf("> opcode=%d vnet=%u vmac=" MACFMT " addr=" IPFMT "\n", - ntohs(varph->opcode), + ntohs(varph->vnetmsghdr.opcode), ntohl(varph->vnet), MAC6TUPLE(varph->vmac.mac), NIPQUAD(varph->addr)); varp_dprint(); } - switch(ntohs(varph->opcode)){ + switch(ntohs(varph->vnetmsghdr.opcode)){ case VARP_OP_REQUEST: err = varp_handle_request(skb, varph); break; @@ -1100,7 +1100,7 @@ int varp_handle_message(struct sk_buff *skb){ err = varp_handle_announce(skb, varph); break; default: - wprintf("> Unknown opcode: %d \n", ntohs(varph->opcode)); + wprintf("> Unknown opcode: %d \n", ntohs(varph->vnetmsghdr.opcode)); break; } exit: diff --git a/tools/vnet/vnetd/vcache.c b/tools/vnet/vnetd/vcache.c index cd06988236..1ea81ba292 100644 --- a/tools/vnet/vnetd/vcache.c +++ b/tools/vnet/vnetd/vcache.c @@ -102,11 +102,11 @@ int varp_send(Conn *conn, uint16_t opcode, uint32_t vnet, Vmac *vmac, uint32_t a int varp_n = sizeof(VarpHdr); VarpHdr varph = {}; - varph.id = htons(VARP_ID); - varph.opcode = htons(opcode); - varph.vnet = vnet; - varph.vmac = *vmac; - varph.addr = addr; + varph.vnetmsghdr.id = htons(VARP_ID); + varph.vnetmsghdr.opcode = htons(opcode); + varph.vnet = vnet; + varph.vmac = *vmac; + varph.addr = addr; if(0){ struct sockaddr_in self; @@ -503,7 +503,7 @@ void VarpCache_sweep(VarpCache *z, int all){ * @param local whether it's local or not */ void vcache_forward_varp(VarpHdr *varph, int local){ - uint16_t opcode = ntohs(varph->opcode); + uint16_t opcode = ntohs(varph->vnetmsghdr.opcode); if(local){ ConnList *l; for(l = vnetd->connections; l; l = l->next){ @@ -611,7 +611,7 @@ int vcache_handle_message(IPMessage *msg, int local){ dprintf("> opcode=%d vnet=%u vmac=" MACFMT "\n", ntohs(varph->opcode), ntohl(varph->vnet), MAC6TUPLE(varph->vmac.mac)); } - switch(ntohs(varph->opcode)){ + switch(ntohs(varph->vnetmsghdr.opcode)){ case VARP_OP_REQUEST: err = vcache_handle_request(msg, varph, local); break; -- 2.30.2